In software development, source code is often modified, recompiled and rebuilt in order to provide updates, eliminate errors and bugs, and to enable additional functionality. When a software application is database-backed, these source code changes may sometimes require updates to the database schema before the modified code can be executed. For example, if a change to the source code references a new property or attribute, then the database schema would need to be modified to reflect the new attribute before the source code can be validly executed against the database. As a result, there is often a tight integration that exists between changes to the source code of a particular application and the schema updates necessary to enable those changes to perform the intended functionality. In many cases, however, it is tedious and impractical for developers to perform schema updates every time source code is changed because schema updates are not generally subject to the same compilation, deployment, rollback and other processes that are inherent in software code development.
Object relational mapping (ORM) systems are used to convert data between entities that may use different data types or formats. For example, an ORM system typically builds a virtual database by creating mappings between objects and attributes residing in-memory and the tables and columns stored in the database. While ORM systems are useful for reducing the amount of code that is written by software developers, they are generally subject to the same limitations and restrictions between source code changes and database schema updates mentioned above.